package bo;

import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where;

@Entity
@Table(name="venta")
@SQLDelete(sql="UPDATE venta SET deleted = '1' WHERE id = ?")
public class Venta extends PersistentObject {

	private static final long serialVersionUID = 89430610498081203L;

	public static final String RETIRO_INMEDIATO = "INMEDIATO";
	public static final String RETIRO_PACTADO = "PACTADO";
	public static final String ESTADO_ACTIVA = "ACTIVA";
	public static final String ESTADO_TERMINADA = "TERMINADA";
	
	@Column(columnDefinition = "varchar(10) default '0' ")
	private String deleted;

	private Date fecha;
	
	@OneToOne
	private Cliente cliente;

	@OneToOne(cascade = CascadeType.ALL)
	private Factura factura;	

	@OneToOne(cascade = CascadeType.ALL)
	private Entrega entrega;
	
	@OneToMany(cascade = CascadeType.ALL)
	private List<FormaDeCobro> formasDeCobro;

//	TODO
//	private MovimientoCaja movimientoCaja;
	
	private String retiro; 	 	// INMEDIATO / PACTADO
	
	private String estado;		// ACTIVA / TERMINADA
	
	
	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public Factura getFactura() {
		return factura;
	}

	public void setFactura(Factura factura) {
		this.factura = factura;
	}

	public String getRetiro() {
		return retiro;
	}

	public void setRetiro(String retiro) {
		this.retiro = retiro;
	}
	
	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public Entrega getEntrega() {
		return entrega;
	}

	public void setEntrega(Entrega entrega) {
		this.entrega = entrega;
	}

	public List<FormaDeCobro> getFormasDeCobro() {
		return formasDeCobro;
	}
	
	public void setFormasDeCobro(List<FormaDeCobro> formasDeCobro) {
		this.formasDeCobro = formasDeCobro;
	}

	public String getDeleted() {
		return deleted;
	}

	public void setDeleted(String deleted) {
		this.deleted = deleted;
	}
	
}